Java.lang প্যাকেজ হল Java এর একটি মৌলিক প্যাকেজ যা Java এর সবচেয়ে সাধারণ এবং প্রয়োজনীয় ক্লাসগুলি ধারণ করে। এই প্যাকেজটি Java Runtime Environment (JRE)-এ স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত থাকে, এবং এটি সরাসরি Java প্রোগ্রামে ব্যবহার করা যায়, কোন নির্দিষ্ট import স্টেটমেন্ট ছাড়া।
String ক্লাস Java.lang প্যাকেজের একটি গুরুত্বপূর্ণ অংশ, এবং এটি immutable (অপরিবর্তনশীল) ক্লাস। String ক্লাসটি মূলত টেক্সট ডেটা (যেমন: "Hello World") হ্যান্ডল করতে ব্যবহৃত হয়।
String ক্লাসের মৌলিক বৈশিষ্ট্য:
- Immutable Nature:
- Java String ক্লাসটি immutable, অর্থাৎ একবার একটি String তৈরি হলে তার মান পরিবর্তন করা যায় না। যখন আপনি একটি নতুন String তৈরি করেন বা একটি String পরিবর্তন করেন, তখন একটি নতুন String অবজেক্ট তৈরি হয়।
- String Pooling:
- String ক্লাস String Pooling সিস্টেম ব্যবহার করে। এর মাধ্যমে, একই মানের String অবজেক্টগুলো পুনঃব্যবহৃত হয় এবং নতুন অবজেক্ট তৈরি না হয়।
String ক্লাসের প্রধান মেথড:
charAt():
- নির্দিষ্ট ইনডেক্সে একটি চরিত্র ফেরত দেয়।
String str = "Hello"; char ch = str.charAt(0); // 'H' ফেরত দিবেlength():
- String-এর দৈর্ঘ্য (characters এর সংখ্যা) ফেরত দেয়।
String str = "Hello"; int len = str.length(); // 5substring():
- String-এর নির্দিষ্ট অংশ (substring) ফেরত দেয়।
String str = "Hello World"; String sub = str.substring(0, 5); // "Hello"toUpperCase() / toLowerCase():
- String-টিকে uppercase বা lowercase-এ রূপান্তর করে।
String str = "Hello"; String upperStr = str.toUpperCase(); // "HELLO" String lowerStr = str.toLowerCase(); // "hello"concat():
- দুটি String একত্রিত (concatenate) করে একটি নতুন String তৈরি করে।
String str1 = "Hello"; String str2 = " World"; String result = str1.concat(str2); // "Hello World"equals():
- দুটি String এর মান তুলনা করে। এটি case-sensitive।
String str1 = "Hello"; String str2 = "hello"; boolean isEqual = str1.equals(str2); // falseequalsIgnoreCase():
- দুটি String এর মান তুলনা করে, কিন্তু এটি case-insensitive।
String str1 = "Hello"; String str2 = "hello"; boolean isEqual = str1.equalsIgnoreCase(str2); // trueindexOf():
- একটি চরিত্র বা সাবস্ট্রিংয়ের প্রথম অবস্থান ফেরত দেয়।
String str = "Hello World"; int index = str.indexOf('o'); // 4replace():
- একটি নির্দিষ্ট চরিত্র বা সাবস্ট্রিংকে অন্য একটি চরিত্র বা সাবস্ট্রিং দ্বারা প্রতিস্থাপন করে।
String str = "Hello World"; String newStr = str.replace("World", "Java"); // "Hello Java"split():
- একটি String কে একটি নির্দিষ্ট delimiter দিয়ে ভাগ করে একটি অ্যারে তৈরি করে।
String str = "apple,banana,orange"; String[] fruits = str.split(","); for (String fruit : fruits) { System.out.println(fruit); // apple, banana, orange }trim():
- String এর শুরু এবং শেষ থেকে অতিরিক্ত সাদা স্থান (whitespace) মুছে ফেলে।
String str = " Hello World "; String trimmed = str.trim(); // "Hello World"contains():
- একটি সাবস্ট্রিং String এর মধ্যে উপস্থিত কিনা তা চেক করে।
String str = "Hello World"; boolean contains = str.contains("World"); // truestartsWith() / endsWith():
- String এর শুরু বা শেষ নির্দিষ্ট সাবস্ট্রিং দিয়ে শুরু বা শেষ হয় কিনা তা চেক করে।
String str = "Hello World"; boolean starts = str.startsWith("Hello"); // true boolean ends = str.endsWith("World"); // true
String Pooling:
Java String Pooling একটি বিশেষ কৌশল যা একই মানের String অবজেক্টগুলি একাধিক বার ব্যবহার করার জন্য ডিজাইন করা হয়েছে। এর মাধ্যমে মেমরি ব্যবহারের দক্ষতা বৃদ্ধি পায়। যখন একই মানের String তৈরি করা হয়, তখন এটি নতুন একটি অবজেক্ট তৈরি না করে String Pool-এ বিদ্যমান String অবজেক্ট রিটার্ন করে।
String Pooling উদাহরণ:
String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2); // true, because both point to the same object in the String pool
StringBuilder এবং StringBuffer:
যেহেতু String ক্লাস immutable, এর মান পরিবর্তন করা সম্ভব নয়। তবে, যখন String পরিবর্তন করতে হয়, তখন StringBuilder অথবা StringBuffer ক্লাস ব্যবহার করা হয়, কারণ তারা mutable। StringBuilder এবং StringBuffer মধ্যে পার্থক্য হল যে StringBuffer thread-safe এবং StringBuilder thread-unsafe।
StringBuilder উদাহরণ:
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb); // "Hello World"
সীমাবদ্ধতা:
- Immutable Nature: একবার একটি String তৈরি হলে, তার মান পরিবর্তন করা যায় না। যদিও এটি নিরাপত্তা এবং কার্যকারিতা বৃদ্ধি করে, তবে যদি একাধিক বার String পরিবর্তন করতে হয়, তবে এটি কিছুটা কম কার্যকর হতে পারে।
- Performance: String concatenation operation অনেক বার করা হলে StringBuilder বা StringBuffer ব্যবহার করা উচিত, কারণ String-এর প্রতি পরিবর্তনের জন্য একটি নতুন অবজেক্ট তৈরি হয়, যা কিছুটা ধীর হতে পারে।
String ক্লাস Java-এর সবচেয়ে গুরুত্বপূর্ণ ক্লাসগুলির মধ্যে একটি এবং এটি টেক্সট ডেটা প্রক্রিয়া করার জন্য ব্যবহৃত হয়। এটি immutable এবং অনেক কার্যকরী মেথড সরবরাহ করে। তবে যদি আপনার String বারবার পরিবর্তন করতে হয়, তাহলে StringBuilder বা StringBuffer ব্যবহার করা উচিত। String Pooling Java-এর একটি শক্তিশালী বৈশিষ্ট্য যা মেমরি ব্যবস্থাপনা উন্নত করে।
java.lang প্যাকেজ Java এর একটি গুরুত্বপূর্ণ এবং ডিফল্ট প্যাকেজ যা Java প্রোগ্রামিং ভাষায় প্রয়োজনীয় অনেক মৌলিক ক্লাস সরবরাহ করে। এই প্যাকেজে অন্তর্ভুক্ত ক্লাসগুলি Java প্রোগ্রামের জন্য অপরিহার্য, যেমন:
StringMathSystemThreadStringBuilderObjectException
এছাড়া, String ক্লাস java.lang প্যাকেজের অন্যতম গুরুত্বপূর্ণ এবং ব্যাপকভাবে ব্যবহৃত ক্লাস। এটি স্ট্রিং (অক্ষরের সিকোয়েন্স) সংরক্ষণ এবং পরিচালনা করার জন্য ব্যবহৃত হয়। Java-তে স্ট্রিং প্রাথমিকভাবে immutable (অপরিবর্তনীয়) এবং object-oriented।
String ক্লাস:
String ক্লাস Java-তে অক্ষরের সিকোয়েন্স (sequence of characters) তৈরি করার জন্য ব্যবহৃত হয়। এটি immutable হওয়ায় একবার একটি স্ট্রিং অবজেক্ট তৈরি হলে তার মান পরিবর্তন করা যায় না। এর পরিবর্তে, স্ট্রিং সম্পর্কিত যে কোনো পরিবর্তন নতুন স্ট্রিং অবজেক্ট তৈরি করে।
String ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:
length(): স্ট্রিংয়ের দৈর্ঘ্য (অক্ষরের সংখ্যা) প্রদান করে।
String str = "Hello"; System.out.println(str.length()); // Output: 5charAt(int index): নির্দিষ্ট ইনডেক্সের অক্ষর প্রদান করে।
char c = str.charAt(0); // Output: Hsubstring(int start, int end): স্ট্রিংয়ের নির্দিষ্ট অংশ (sub-string) প্রদান করে।
String subStr = str.substring(1, 4); // Output: elltoUpperCase() এবং toLowerCase(): স্ট্রিংয়ের সমস্ত অক্ষরকে বড় হাতের অথবা ছোট হাতের অক্ষরে রূপান্তরিত করে।
System.out.println(str.toUpperCase()); // Output: HELLO System.out.println(str.toLowerCase()); // Output: helloequals(): দুটি স্ট্রিংয়ের মান তুলনা করে।
String str1 = "Hello"; String str2 = "Hello"; System.out.println(str1.equals(str2)); // Output: trueconcat(): দুটি স্ট্রিং একত্রিত করে।
String str3 = "World"; String result = str.concat(" " + str3); // Output: Hello World
String এবং Immutable কনসেপ্ট:
Immutable কনসেপ্টের মানে হলো, যখন কোনো অবজেক্ট immutable হয়, তখন সেই অবজেক্টের অবস্থা পরিবর্তন করা সম্ভব হয় না। String ক্লাস Java-তে একটি immutable ক্লাস, যার মানে হলো একবার স্ট্রিং অবজেক্ট তৈরি হলে তার মান পরিবর্তন করা সম্ভব নয়। যখনই আপনি একটি নতুন স্ট্রিং মান অ্যাসাইন করেন, তখন একটি নতুন স্ট্রিং অবজেক্ট তৈরি হয় এবং আগের অবজেক্টটি অপরিবর্তিত থাকে।
Immutable String উদাহরণ:
public class ImmutableStringExample {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = str1;
str1 = str1 + " World"; // A new String object is created
System.out.println("str1: " + str1); // Output: Hello World
System.out.println("str2: " + str2); // Output: Hello
}
}
এখানে, যখন আমরা str1 এর মান পরিবর্তন করেছি, তখন একটি নতুন স্ট্রিং অবজেক্ট তৈরি হয়েছে এবং str1 নতুন মান "Hello World" ধারণ করেছে। কিন্তু str2 এর মান আগের মতো "Hello" রয়ে গেছে।
String-এর Immutable হওয়ার সুবিধা:
- Thread-Safety:
- যেহেতু String অবজেক্টের মান পরিবর্তন করা যায় না, তাই একাধিক থ্রেড যদি একই স্ট্রিং অবজেক্টে কাজ করে, তাহলে এটি স্বয়ংক্রিয়ভাবে thread-safe হয়। এর মানে, একাধিক থ্রেড একই স্ট্রিং অবজেক্টে কাজ করার পরেও কোনো ধরনের ডেটা দুর্নীতি বা প্রতিদ্বন্দ্বিতা (race condition) হবে না।
- Memory Efficiency:
- String অবজেক্টগুলো সাধারণত String Pool এ রাখা হয়। একবার কোনো স্ট্রিং মান তৈরি হলে, সিস্টেমটি এটি পুনরায় ব্যবহার করে এবং একই মানের জন্য নতুন স্ট্রিং অবজেক্ট তৈরি করা হয় না, ফলে মেমরি সাশ্রয় হয়।
- Security:
- যেহেতু স্ট্রিং অবজেক্টের মান পরিবর্তনযোগ্য নয়, তাই এটি নিরাপদ। উদাহরণস্বরূপ, যদি স্ট্রিংটি কোনো পাসওয়ার্ড বা সেনসিটিভ ডেটা ধারণ করে, তবে এর মান পরিবর্তন করা যাবে না, ফলে এটি নিরাপদ থাকে।
String Mutable কনসেপ্ট:
যেহেতু String ইমিউটেবল, কিছু পরিস্থিতিতে যদি আপনাকে স্ট্রিংয়ের মানে বারবার পরিবর্তন করতে হয়, তবে StringBuffer বা StringBuilder ক্লাস ব্যবহার করা উচিত। এই ক্লাসগুলো মিউটেবল, মানে এগুলোর অবজেক্টগুলির মান পরিবর্তন করা যায়।
StringBuilder উদাহরণ:
public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // StringBuilder modifies its content directly
System.out.println(sb); // Output: Hello World
}
}
এখানে, StringBuilder ক্লাসের append() মেথড ব্যবহার করে স্ট্রিংয়ের মান পরিবর্তন করা হয়েছে, যা mutable।
- String ক্লাস immutable হওয়ায়, একবার এর মান সেট করা হলে তার পরবর্তী কোনো পরিবর্তন করা সম্ভব নয়।
- Immutable কনসেপ্টের মাধ্যমে স্ট্রিংয়ের নিরাপত্তা এবং থ্রেড-সেফটি নিশ্চিত করা হয়।
- যখন বারবার স্ট্রিং পরিবর্তন করতে হয়, তখন StringBuilder বা StringBuffer ব্যবহার করা উচিত, কারণ সেগুলি mutable এবং তাদের মান পরিবর্তন করা যায়।
- String এর immutable হওয়া মেমরি এবং নিরাপত্তা বৃদ্ধিতে সহায়তা করে, বিশেষ করে বড় সফটওয়্যার অ্যাপ্লিকেশনগুলোতে যেখানে অনেক থ্রেড একসাথে কাজ করে।
String হল Java-এর সবচেয়ে ব্যবহৃত ডেটা টাইপগুলির একটি, যা টেক্সট বা চরিত্রের সিকোয়েন্স প্রতিনিধিত্ব করে। Java-তে স্ট্রিং তৈরি করার দুটি প্রধান উপায় রয়েছে:
- String Literal ব্যবহার করে স্ট্রিং তৈরি করা।
- String Object ব্যবহার করে স্ট্রিং তৈরি করা।
এটি খুবই গুরুত্বপূর্ণ কারণ String ক্লাসের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে, যা পারফরম্যান্স এবং মেমরি ব্যবস্থাপনা প্রভাবিত করতে পারে।
1. String Literal (String Pool):
String Literal হল স্ট্রিং তৈরি করার একটি পদ্ধতি যেখানে স্ট্রিংটি সরাসরি String Pool (string constant pool) এ সংরক্ষণ করা হয়। যখন আপনি একটি স্ট্রিং literal ব্যবহার করেন, তখন Java এর String Pool চেক করে দেখতে যে স্ট্রিংটি আগে থেকে সেখানে রয়েছে কিনা। যদি থাকে, তাহলে পূর্ববর্তী অবজেক্টটি রিটার্ন করা হয়, অন্যথায় নতুন অবজেক্ট তৈরি করা হয় এবং স্ট্রিং পুলে রাখা হয়।
String Pool হল Java-এ একটি বিশেষ জায়গা যেখানে সমস্ত স্ট্রিং literals সংরক্ষণ করা হয়। এটি মেমরি ব্যবস্থাপনার জন্য সহায়ক এবং একই মানের স্ট্রিং-এর জন্য পুনঃব্যবহারযোগ্যতা নিশ্চিত করে।
String Literal Example:
public class StringLiteralExample {
public static void main(String[] args) {
String str1 = "Hello"; // String literal
String str2 = "Hello"; // Same literal, same object in string pool
System.out.println(str1 == str2); // Output: true
}
}
Explanation:
- যখন আপনি
"Hello"স্ট্রিং literal ব্যবহার করেন, এটি String Pool এ যোগ হয়। - পরবর্তীতে যখন আপনি আবার
"Hello"ব্যবহার করেন, Java String Pool চেক করে এবং পূর্বের স্ট্রিং অবজেক্টটি রিটার্ন করে। তাইstr1 == str2সত্য হবে।
Advantages:
- Memory Efficiency: একই মানের স্ট্রিং যদি বারবার ব্যবহৃত হয়, তবে এটি String Pool এ সংরক্ষণ করা হয় এবং পুনরায় ব্যবহৃত হয়, যার ফলে মেমরি কম ব্যবহার হয়।
- Performance: একাধিক স্ট্রিং literal-এর জন্য একই অবজেক্ট ব্যবহার হওয়ার ফলে পারফরম্যান্স উন্নত হয়।
2. String Object (Using the new Keyword):
String Object তৈরি করার সময় new কিওয়ার্ড ব্যবহার করা হয়, যা একটি নতুন String object তৈরি করে। এটি স্ট্রিং পুলে স্টোর হয় না, বরং একটি নতুন অবজেক্ট তৈরি হয়। এতে memory overhead এবং performance issues হতে পারে, কারণ নতুন অবজেক্ট তৈরি করার জন্য অতিরিক্ত মেমরি এবং সময় লাগে।
String Object Example:
public class StringObjectExample {
public static void main(String[] args) {
String str1 = new String("Hello"); // New String object
String str2 = new String("Hello"); // Another new String object
System.out.println(str1 == str2); // Output: false
}
}
Explanation:
- এখানে,
"Hello"স্ট্রিং literal ব্যবহার করা হলেও,new String("Hello")এর মাধ্যমে একটি নতুন অবজেক্ট তৈরি হচ্ছে। এতে স্ট্রিং পুলে অবজেক্ট সংরক্ষণ করা হয় না। str1 == str2এfalseরিটার্ন হবে কারণ দুইটি আলাদা অবজেক্ট তৈরি হয়েছে, যদিও তাদের মান সমান।
Disadvantages:
- Memory Consumption:
newকিওয়ার্ড ব্যবহার করে স্ট্রিং তৈরি করা হয়, যার ফলে একটি নতুন অবজেক্ট তৈরি হয়, যা মেমরি বেশি ব্যবহার করে। - Performance: এটি স্ট্রিং পুলের সুবিধা গ্রহণ করে না, তাই এর পারফরম্যান্স কিছুটা কম হতে পারে।
String Literal vs String Object:
| Criteria | String Literal | String Object (using new) |
|---|---|---|
| Memory Efficiency | স্ট্রিং পুল ব্যবহার করে, একাধিক স্ট্রিং একই অবজেক্টের মাধ্যমে ব্যবহার করা যায়। | নতুন অবজেক্ট তৈরি হয় এবং স্ট্রিং পুলে সংরক্ষিত হয় না। |
| Performance | দ্রুত, কারণ String Pool ব্যবহার করা হয় এবং এক্সিস্টিং অবজেক্ট ব্যবহার হয়। | ধীর, কারণ নতুন অবজেক্ট তৈরি হয়। |
| Reusability | একই মানের স্ট্রিং বারবার ব্যবহৃত হলে এটি String Pool থেকে পুনরায় ব্যবহার করা হয়। | নতুন অবজেক্ট তৈরি হওয়ায় পুনঃব্যবহারযোগ্যতা কম। |
| Equality Check | == অপারেটর ব্যবহার করে সত্য বা মিথ্যা চেক করলে একে অপরের সাথে সরাসরি তুলনা করা হয়। | == অপারেটর ব্যবহার করলে false রিটার্ন করবে, কারণ আলাদা অবজেক্ট তৈরি হয়। |
When to Use String Literal and String Object:
- Use String Literal:
- যখন আপনি নিশ্চিত যে একই মানের স্ট্রিং একাধিক জায়গায় ব্যবহৃত হবে। এতে মেমরি এবং পারফরম্যান্স উভয়ই উন্নত হবে।
- String Pool ব্যবহার করতে চাইলে এটি সবচেয়ে উপযুক্ত।
- Use String Object (
new String()):- যখন আপনি একটি নতুন স্ট্রিং অবজেক্ট তৈরি করতে চান এবং সেটি স্ট্রিং পুলে সংরক্ষণ করতে চান না।
- সাধারণত খুব কম ব্যবহৃত স্ট্রিং বা থ্রেডের মধ্যে পৃথক মানের জন্য ব্যবহার করা হয়, যদিও এটা কম প্রচলিত।
- String Literal হল Memory Efficient এবং Performance Optimized যেহেতু এটি String Pool ব্যবহার করে এবং পুনঃব্যবহারযোগ্য।
- String Object (যে
newকিওয়ার্ড ব্যবহার করে তৈরি করা হয়) একাধিক নতুন অবজেক্ট তৈরি করে, যার ফলে মেমরি বেশি ব্যবহার হয় এবং পারফরম্যান্স কম হতে পারে।
Java-তে স্ট্রিং ব্যবহারের ক্ষেত্রে String Literal ব্যবহারের জন্য একটি ভালো অভ্যাস, কিন্তু যখন আপনি নির্দিষ্টভাবে নতুন স্ট্রিং অবজেক্ট তৈরি করতে চান, তখন String Object ব্যবহার করা যেতে পারে।
String ক্লাস Java.lang প্যাকেজের একটি গুরুত্বপূর্ণ অংশ, যা immutable (অপরিবর্তনীয়) অবজেক্ট হিসেবে কাজ করে। এটি চরিত্রের সিকোয়েন্স ধারণ করে এবং এতে অনেক শক্তিশালী মেথড রয়েছে যা স্ট্রিং ম্যানিপুলেশনের জন্য ব্যবহৃত হয়। এই মেথডগুলির মধ্যে সবচেয়ে সাধারণ কিছু মেথড হল concat(), substring(), length(), এবং charAt()।
নিচে এই চারটি মেথডের কাজ এবং ব্যবহার দেওয়া হলো:
1. concat() মেথড:
concat() মেথড দুটি স্ট্রিংকে একত্রিত (concatenate) করে একটি নতুন স্ট্রিং তৈরি করে। এটি আসলে দুটি স্ট্রিংয়ের মধ্যে একটি নতুন স্ট্রিং বানায়।
সিনট্যাক্স:
public String concat(String str);
- এটি বর্তমান স্ট্রিংয়ের শেষে দেয়া স্ট্রিং
strযোগ করে একটি নতুন স্ট্রিং রিটার্ন করে।
Example:
public class StringConcatExample {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = " World!";
String result = str1.concat(str2); // Concatenates str1 and str2
System.out.println(result); // Output: Hello World!
}
}
ব্যাখ্যা:
- এখানে
concat()মেথডstr1এবংstr2এর মান একত্রিত করেছে এবং একটি নতুন স্ট্রিং"Hello World!"প্রদান করেছে।
2. substring() মেথড:
substring() মেথড একটি স্ট্রিংয়ের অংশ নিয়ে নতুন একটি স্ট্রিং তৈরি করে। এটি স্ট্রিংয়ের নির্দিষ্ট সেগমেন্ট বের করতে ব্যবহৃত হয়।
সিনট্যাক্স:
public String substring(int beginIndex);
public String substring(int beginIndex, int endIndex);
- প্রথম মেথডটি beginIndex থেকে স্ট্রিংয়ের শেষ পর্যন্ত অংশ রিটার্ন করে।
- দ্বিতীয় মেথডটি beginIndex থেকে endIndex-1 পর্যন্ত স্ট্রিং রিটার্ন করে।
Example:
public class SubstringExample {
public static void main(String[] args) {
String str = "Hello World";
String substr1 = str.substring(6); // From index 6 to end
String substr2 = str.substring(0, 5); // From index 0 to 4
System.out.println(substr1); // Output: World
System.out.println(substr2); // Output: Hello
}
}
ব্যাখ্যা:
str.substring(6)স্ট্রিংয়ের 6 নম্বর ইনডেক্স থেকে শেষ পর্যন্ত অংশ নিয়ে"World"রিটার্ন করে।str.substring(0, 5)স্ট্রিংয়ের 0 থেকে 4 ইনডেক্স পর্যন্ত অংশ নিয়ে"Hello"রিটার্ন করে।
3. length() মেথড:
length() মেথড স্ট্রিংয়ের দৈর্ঘ্য (character count) রিটার্ন করে। এটি স্ট্রিংয়ে থাকা মোট ক্যারেক্টারের সংখ্যা প্রদান করে।
সিনট্যাক্স:
public int length();
Example:
public class LengthExample {
public static void main(String[] args) {
String str = "Hello";
int len = str.length();
System.out.println(len); // Output: 5
}
}
ব্যাখ্যা:
str.length()স্ট্রিং"Hello"এর দৈর্ঘ্য ৫ রিটার্ন করে, কারণ এটি ৫টি ক্যারেক্টার ধারণ করে।
4. charAt() মেথড:
charAt() মেথড একটি নির্দিষ্ট ইনডেক্সের ক্যারেক্টার রিটার্ন করে। এটি স্ট্রিংয়ের নির্দিষ্ট স্থানে থাকা ক্যারেক্টারটিকে আউটপুট হিসেবে প্রদান করে।
সিনট্যাক্স:
public char charAt(int index);
- এটি স্ট্রিংয়ের index অনুযায়ী একটি char রিটার্ন করে।
Example:
public class CharAtExample {
public static void main(String[] args) {
String str = "Hello";
char ch = str.charAt(1); // Get character at index 1
System.out.println(ch); // Output: e
}
}
ব্যাখ্যা:
str.charAt(1)স্ট্রিং"Hello"এর 1 নম্বর ইনডেক্সের ক্যারেক্টার (যা"e") রিটার্ন করে।
Summary of Methods:
| Method | Description | Syntax | Example Output |
|---|---|---|---|
concat() | Concatenates two strings | str1.concat(str2) | "Hello World!" |
substring() | Returns a substring from a string | str.substring(beginIndex) or str.substring(beginIndex, endIndex) | "World", "Hello" |
length() | Returns the length of a string | str.length() | 5 |
charAt() | Returns the character at a specific index | str.charAt(index) | 'e' |
String ক্লাসের concat(), substring(), length(), এবং charAt() মেথডগুলি Java প্রোগ্রামিংয়ে স্ট্রিং ম্যানিপুলেশনের জন্য গুরুত্বপূর্ণ এবং সাধারণভাবে ব্যবহৃত হয়। এই মেথডগুলো স্ট্রিং-এর দৈর্ঘ্য, নির্দিষ্ট অংশ, নির্দিষ্ট ক্যারেক্টার, বা দুটি স্ট্রিং একত্রিত করতে সাহায্য করে এবং কোডকে আরও কার্যকরী ও সংক্ষেপে লিখতে সহায়ক।
java.lang প্যাকেজে String ক্লাসটি স্ট্রিং ম্যানিপুলেশনের জন্য অনেক শক্তিশালী এবং কার্যকরী মেথড সরবরাহ করে। এই মেথডগুলো দ্বারা স্ট্রিংয়ের পরিবর্তন, বিভাজন, এবং রূপান্তর করা যায়। নিচে স্ট্রিং ম্যানিপুলেশন সম্পর্কিত কিছু গুরুত্বপূর্ণ মেথডের ব্যবহার আলোচনা করা হলো:
1. split() মেথড:
split() মেথডটি একটি স্ট্রিংকে নির্দিষ্ট ডিলিমিটার (বা সিম্বল) এর মাধ্যমে বিভক্ত করতে ব্যবহৃত হয় এবং এটি একটি অ্যারে প্রদান করে যা প্রতিটি ভাগ করা অংশ ধারণ করে।
সিনট্যাক্স:
public String[] split(String regex) public String[] split(String regex, int limit)- ব্যবহার:
regexহল বিভাজক বা প্যাটার্ন, যার মাধ্যমে স্ট্রিংটি ভাগ করা হবে।limitব্যবহার করে আপনি কতটি ভাগে স্ট্রিংটি বিভক্ত হবে তা সীমিত করতে পারেন।
উদাহরণ:
public class SplitExample {
public static void main(String[] args) {
String str = "apple,orange,banana";
String[] fruits = str.split(","); // "," ডিলিমিটার দিয়ে বিভক্ত করা হবে
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
আউটপুট:
apple
orange
banana
এখানে, split(",") মেথডটি কমা দিয়ে স্ট্রিংটি ভাগ করে একটি অ্যারে তৈরি করেছে।
2. replace() মেথড:
replace() মেথডটি স্ট্রিংয়ের একটি নির্দিষ্ট অংশকে অন্য একটি অংশ দ্বারা প্রতিস্থাপন করতে ব্যবহৃত হয়।
সিনট্যাক্স:
public String replace(CharSequence oldChar, CharSequence newChar) public String replaceAll(String regex, String replacement) public String replaceFirst(String regex, String replacement)- ব্যবহার:
oldCharহল পুরানো অংশ, যা প্রতিস্থাপন করতে হবে।newCharহল নতুন অংশ, যা পুরানো অংশের জায়গায় বসানো হবে।replaceAll()এবংreplaceFirst()রেগুলার এক্সপ্রেশন (regex) ব্যবহার করে সব বা প্রথম মেলানো অংশ প্রতিস্থাপন করতে পারে।
উদাহরণ:
public class ReplaceExample {
public static void main(String[] args) {
String str = "Hello World";
String result = str.replace("World", "Java");
System.out.println(result); // Output: Hello Java
}
}
আউটপুট:
Hello Java
এখানে, replace("World", "Java") মেথডটি "World" কে "Java"-তে প্রতিস্থাপন করেছে।
3. toUpperCase() মেথড:
toUpperCase() মেথডটি একটি স্ট্রিংয়ের সব ক্যারেক্টারকে বড় হাতের অক্ষরে রূপান্তরিত করে।
সিনট্যাক্স:
public String toUpperCase() public String toUpperCase(Locale locale)- ব্যবহার:
- এটি স্ট্রিংয়ের প্রতিটি ছোট হাতের অক্ষরকে বড় হাতের অক্ষরে রূপান্তরিত করে।
Localeপ্যারামিটার ব্যবহার করলে এটি নির্দিষ্ট অঞ্চল বা ভাষার ভিত্তিতে রূপান্তর করতে সাহায্য করে।
উদাহরণ:
public class UpperCaseExample {
public static void main(String[] args) {
String str = "hello world";
String result = str.toUpperCase();
System.out.println(result); // Output: HELLO WORLD
}
}
আউটপুট:
HELLO WORLD
এখানে, toUpperCase() মেথডটি স্ট্রিংয়ের সব ছোট হাতের অক্ষরকে বড় হাতের অক্ষরে রূপান্তরিত করেছে।
4. toLowerCase() মেথড:
toLowerCase() মেথডটি একটি স্ট্রিংয়ের সব বড় হাতের অক্ষরকে ছোট হাতের অক্ষরে রূপান্তরিত করে।
সিনট্যাক্স:
public String toLowerCase() public String toLowerCase(Locale locale)- ব্যবহার:
- এটি স্ট্রিংয়ের প্রতিটি বড় হাতের অক্ষরকে ছোট হাতের অক্ষরে রূপান্তরিত করে।
Localeপ্যারামিটার ব্যবহার করলে এটি নির্দিষ্ট অঞ্চল বা ভাষার ভিত্তিতে রূপান্তর করতে সাহায্য করে।
উদাহরণ:
public class LowerCaseExample {
public static void main(String[] args) {
String str = "HELLO WORLD";
String result = str.toLowerCase();
System.out.println(result); // Output: hello world
}
}
আউটপুট:
hello world
এখানে, toLowerCase() মেথডটি স্ট্রিংয়ের সব বড় হাতের অক্ষরকে ছোট হাতের অক্ষরে রূপান্তরিত করেছে।
সারাংশ:
split(): স্ট্রিংকে নির্দিষ্ট ডিলিমিটার দিয়ে ভাগ করতে ব্যবহৃত হয় এবং একটি অ্যারে প্রদান করে।replace(): একটি স্ট্রিংয়ের নির্দিষ্ট অংশকে অন্য একটি অংশ দিয়ে প্রতিস্থাপন করতে ব্যবহৃত হয়।toUpperCase(): স্ট্রিংয়ের সব অক্ষরকে বড় হাতের অক্ষরে রূপান্তরিত করে।toLowerCase(): স্ট্রিংয়ের সব অক্ষরকে ছোট হাতের অক্ষরে রূপান্তরিত করে।
এই মেথডগুলো Java প্রোগ্রামিংয়ের খুবই গুরুত্বপূর্ণ এবং এগুলির সাহায্যে স্ট্রিংয়ের বিভিন্ন পরিবর্তন করা যায়, যেমন স্ট্রিং বিভাজন, প্রতিস্থাপন এবং কেস কনভার্সন।
Read more